A class defines a data type, much like a struct would be in C. In a CompSci sense, a type consists of two things: a set of values *and* a set of operations which operate on those values. Thus 'int' all by itself isn't a true 'type' until you add operations like 'add two ints' or 'int*int', etc. In exactly the same way, a 'class' provides a set of (usually 'public') operations, and a set of (usually non-public) data bits representing the abstract values that instances of the type can have. From a C language perspective, a 'class' is a 'struct' whose members default to 'private'.